[quartz]Use new (since 10.5) NSTrackingArea instead of older tracking rect.
authorJohn Ralls <jralls@ceridwen.us>
Tue, 29 Nov 2022 18:12:18 +0000 (10:12 -0800)
committerJohn Ralls <jralls@ceridwen.us>
Tue, 29 Nov 2022 18:32:19 +0000 (10:32 -0800)
gdk/quartz/GdkQuartzView.c

index f82c72a7b0e59c89325dec80a3b80e352a92e5b2..931d64c71bf10e17e1652f729b1191f1ef8ef59e 100644 (file)
   if (trackingRect)
     {
       [self removeTrackingRect: trackingRect];
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500
+      [(NSTrackingArea*)trackingRect release];
+#endif
       trackingRect = 0;
     }
 
@@ -472,13 +475,19 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source,
 {
   GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (gdk_window->impl);
   NSRect rect;
-
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500
+  NSTrackingArea *trackingArea;
+#endif
+  
   if (!impl || !impl->toplevel)
     return;
 
   if (trackingRect)
     {
       [self removeTrackingRect: trackingRect];
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500
+      [(NSTrackingArea*)trackingRect release];
+#endif
       trackingRect = 0;
     }
 
@@ -490,10 +499,19 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source,
    */
 
   rect = [self bounds];
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500
+  trackingArea = [[NSTrackingArea alloc] initWithRect: rect
+                  options: NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved | NSTrackingCursorUpdate | NSTrackingActiveInActiveApp | NSTrackingInVisibleRect | NSTrackingEnabledDuringMouseDrag
+                  owner: self
+                  userInfo: nil];
+  [self addTrackingArea: trackingArea];
+  trackingRect = (NSInteger)[trackingArea retain];
+#else
   trackingRect = [self addTrackingRect: rect
                  owner: self
                  userData: nil
                  assumeInside: NO];
+#endif
 }
 
 -(void)viewDidMoveToWindow
@@ -509,6 +527,9 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source,
   if (newWindow == nil && trackingRect)
     {
       [self removeTrackingRect: trackingRect];
+#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10500
+      [(NSTrackingArea*)trackingRect release];
+#endif
       trackingRect = 0;
     }
 }